package cn.hsa.fqz.monitor.service;

import cn.hsa.fqz.monitor.controller.vo.*;
import cn.hsa.fqz.monitor.entity.*;
import cn.hsa.fqz.monitor.service.dto.MonitorBussEntityDTO;
import cn.hsa.fqz.monitor.service.dto.MonitorEntityInstanceDTO;
import cn.hsa.hsaf.core.framework.util.PageResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MonitorEntityService {

    List<TMonitorEntity> getAllEntity();

    TMonitorEntity getEntityByCode(String code);

    List<TMonitorModelDict> getModelDictByEnityCode(String entityCode);

    MonitorEntityInstanceDTO getEntityInstinceByCode(String host,Integer port,String passwd,TagMonitorQueryVO vo);

    Boolean insertEntityAndProperties(TMonitorEntityVO vo);

    Boolean deleteEntityAndProperties(String entityCode,String bussType);

    Boolean updateEntityAndProperties(TMonitorEntityVO vo);

    TMonitorEntityVO selectEntityAndProperties(String entityCode,String bussCode);

    PageResult<TMonitorEntityVO> selectPageEntityAndProperties(TMonitorConfigQueryVO vo);

    List<TMonitorBussType> getAllBussType();

    List<MonitorBussEntityDTO> getEntityByBussCode(String bussCode);

    Boolean deleteEntityProperties(Integer entityPropId);

    Boolean addSyncMonitoryEntityProperties(String ckHost,Integer ckPort,String ckPasswd,Integer entityId,String bussType);

    Boolean addSyncMonitoryEntityDimensionProperties(String ckHost, Integer ckPort, String ckPasswd, Integer entityDimensionId);

    Boolean addSyncMonitoryEntityExecSqlProperties(String ckHost, Integer ckPort, String ckPasswd,Integer entityExecSqlId);

    Boolean insertBuss(MonitorBussTypeVO vo);

    Boolean updateBuss(MonitorBussTypeVO vo);

    Boolean deleteBuss(Integer bussId);

    PageResult<MonitorBussTypeVO> selectPageBuss(TMonitorConfigQueryVO vo);

    Boolean insertDimension(DimensionVO vo);

    Boolean updateDimension(DimensionVO vo);

    Boolean deleteDimension(Integer dimensionId);

    List<TMonitorDimension> selectDimension(String entityCode);

    List<TMonitorEntityProperties> selectEntityProperties(String entityCode, String bussCode);

    PageResult<TMonitorDimension> selectPageDimension(TMonitorConfigQueryVO vo);

    List<TMonitorEntityDimensionProperties> selectEntityDimensionProperties(@Param("entityCode") String entityCode, @Param("tableName") String tableName);

    Boolean insertEntityDimension(EntityDimensionVO vo);

    Boolean updateEntityDimension(EntityDimensionVO vo);

    PageResult<EntityDimensionVO> selectPageEntityDimension(TMonitorConfigQueryVO vo);

    Boolean deleteEntityDimension(Integer entityDimensionId);

    Boolean insertExcuteSql(EntityExcuteSqlVO vo);

    Boolean updateExcuteSql(EntityExcuteSqlVO vo);

    PageResult<EntityExcuteSqlVO> selectPageExcuteSql(TMonitorConfigQueryVO vo);

    Boolean deleteExcuteSql(Integer sqlId);

    List<TMonitorEntityExecuteSqlProperties> selectExecuteSqlAndProperties(Integer sqlId);
}
